https://leetcode.cn/problems/n-th-tribonacci-number/description/
//class Solution {
//public:
//    int tribonacci(int n)
//    {
//        if (n <= 0) return 0;
//        if (n <= 2) return 1;
//        int n0 = 0;
//        int n1 = 1;
//        int n2 = 1;
//        int n3 = 0;
//
//        for (int i = 3; i <= n; i++)
//        {
//            n3 = n1 + n2 + n0;
//            n0 = n1;
//            n1 = n2;
//            n2 = n3;
//        }
//        return n3;
//    }
//};


https://leetcode.cn/problems/three-steps-problem-lcci/
//class Solution {
//public:
//    int waysToStep(int n)
//    {
//        const int MOD = 1e9 + 7;
//        if (n <= 2) return n;
//        if (n == 3) return 4;
//
//        int n1 = 1, n2 = 2, n3 = 4, nx = 0;
//        for (int i = 4; i <= n; i++)
//        {
//            nx = ((n1 + n2) % MOD + n3) % MOD;
//            n1 = n2;
//            n2 = n3;
//            n3 = nx;
//        }
//        return nx;
//
//    }
//};